package luogu.editor;

import java.util.ArrayList;
import java.util.List;

/* 
 * 类斐波那契循环数
 */
public class similarFib {
    public class Main {
        public static void main(String[] args) {
            for (int i = 0; i < 10000000; i++) {
                if (isFib(i)) {
                    System.out.println(i);
                }
            }
        }
        public static boolean isFib(int num){
            //将n转化为字符串
            String s = String.valueOf(num);
            //幂
            int n = s.length();
            List<Integer> a = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                a.add(s.charAt(i) - '0');
            }
            List<Integer> seq = new ArrayList<>(a);
            while (true) {
                int t = 0;
                // 遍历当前序列的最后n个数字，计算下一个数字
                for (int i = seq.size() - n; i < seq.size(); i++) {
                    t += seq.get(i);
                }
                if (t > 10000000) return false;
                if (t == num) return true;
                // 将计算出的数字添加到序列中，作为后续计算的一部分
                seq.add(t);
            }
        }
    }
}
